package cn.tedu.api;

import java.util.Arrays;

/**本类用于测试String类的常用方法*/
public class TestString2 {
    public static void main(String[] args) {
        char[] value = {'a','b','c'};
        String s1 = new String(value);
        String s2 = "abc";

        /**String子类重写从父类Object中继承的3个方法，全部都是围绕字符串的具体内容的*/
        System.out.println(s1.hashCode());//96354,根据串的具体内容生成哈希码值
        System.out.println(s2.hashCode());//96354

        System.out.println(s1.equals(s2));//true,比较的是两个串的具体内容

        System.out.println(s1);//abc，打印的是串的具体值
        System.out.println(s2);//abc

        System.out.println(s1.length());//3,查看当前字符串的字符个数/长度
        System.out.println(s1.toUpperCase());//ABC,将本字符串转为全大写
        System.out.println(s1.toLowerCase());//abc,将本字符串转为全小写
        System.out.println(s1.startsWith("a"));//true,判断当前字符串是否以指定字符开头
        System.out.println(s1.endsWith("a"));//false,判断当前字符串是否以指定字符结尾

        System.out.println(s1.charAt(0));//a,获取指定下标处的字符

        String s3 = "abcdbdbb";
        System.out.println(s3.indexOf("b"));//1,获取指定字符第一次出现的下标值
        System.out.println(s3.lastIndexOf("b"));//7,获取指定字符最后一次出现的下标值

        System.out.println(s1.concat("cxy"));//abccxy,将参数字符串拼接在本字符串末尾
        System.out.println(s1);//abc,说明上面的拼接是临时的，并不会改变s1串的内容

        String s4 = s1.concat("cxy");//如果想要后续多次使用拼接的效果，可以接收方法的返回值
        System.out.println(s4);

        /**本方法的返回值类型是String[]，所以需要使用Arrays.toString()来打印数组中的具体元素
         * 本方法的作用是以指定字符作为分隔符，将当前字符串分割为几个部分
         * 这里只是使用Arrays工具类打印查看了数组的具体元素，并没有保留下来*/
        String s5 = "afbfcfdfe";
//        String[] ss = s5.split("f");
//        System.out.println(Arrays.toString(ss));
        System.out.println(Arrays.toString(s5.split("f")));

        //由于split()的返回值类型是String[],所以我们可以接收这个方法的返回值交给变量a保存
        //a变量保存着的就是这个String数组的地址值，我们就可以通过for循环遍历这个数组了
        String[] a = s5.split("f");
        for (int i = 0; i < args.length ; i++) {
            System.out.println(a[i]);
        }

        String s6 = "  hhh hh   ";//去除本字符串首尾两端的空格
        System.out.println(s6.trim());

        String s7 = "abcdefgh";
        System.out.println(s7.substring(3));//defgh ,截取指定下标开始一直到字符串结束的字串
        System.out.println(s7.substring(3,6));//def,截取指定下标开始(包含)到指定下标结束(不包含)的字串，注意:含头不含尾

        System.out.println(String.valueOf(10));//将int类型的10，转为String类型的10
        System.out.println("10"+10);//1010
        System.out.println(10+10);//20
        /**如果想要把计算的数据类型转为字符串类型，拼接个空串""就可以了*/
        System.out.println(10+""+10);//1010

        byte[] bs = s7.getBytes();//将指定的字符串转为byte[]
        System.out.println(Arrays.toString(bs));


    }
}
